Sentiment Analysis এর মাধ্যমে টেক্সট ডেটা বিশ্লেষণ

প্র্যাকটিস প্রোজেক্টস - আর্টিফিশিয়াল ইন্টেলিজেন্স (Artificial Intelligence) - Computer Science

535

Sentiment Analysis এর মাধ্যমে টেক্সট ডেটা বিশ্লেষণ

Sentiment Analysis বা অনুভূতি বিশ্লেষণ হল একটি প্রক্রিয়া যার মাধ্যমে টেক্সট ডেটা থেকে ইতিবাচক, নেতিবাচক, বা নিরপেক্ষ অনুভূতি বের করা হয়। এটি সামাজিক যোগাযোগ মাধ্যমের পোস্ট, প্রোডাক্ট রিভিউ, কাস্টমার ফিডব্যাক ইত্যাদি বিশ্লেষণে ব্যবহৃত হয়। Sentiment Analysis প্রজেক্টে প্রায়শই মেশিন লার্নিং এবং প্রাকৃতিক ভাষা প্রক্রিয়াকরণ (NLP) টেকনিক ব্যবহার করা হয়।


প্রয়োজনীয় টুল এবং লাইব্রেরি

  • Python: প্রোগ্রামিং ল্যাঙ্গুয়েজ হিসেবে।
  • NLTK (Natural Language Toolkit): টেক্সট প্রি-প্রসেসিং এবং টোকেনাইজেশনের জন্য।
  • Scikit-Learn: মেশিন লার্নিং মডেল তৈরির জন্য।
  • TensorFlow/Keras: ডিপ লার্নিং মডেল তৈরির জন্য।
  • Pandas এবং Matplotlib: ডেটা লোড এবং ভিজ্যুয়ালাইজেশনের জন্য।

ধাপ ১: ডেটাসেট সংগ্রহ এবং লোড করা

ডেটাসেট: Sentiment140 Dataset for Sentiment Analysis

ডেটাসেট ডাউনলোড করার পর, ডেটা লোড এবং কিছু প্রাথমিক পর্যবেক্ষণ করতে পারেন।

import pandas as pd

# ডেটাসেট লোড
df = pd.read_csv('/path/to/sentiment140.csv', encoding='latin-1')

# ডেটা টেবিলের প্রথম কয়েকটি সারি দেখা
print(df.head())

# ডেটাতে মোট সারি এবং কলামের সংখ্যা
print(df.shape)

ডেটাতে সাধারণত টুইট, টুইটের সেন্টিমেন্ট (০ = নেতিবাচক, ৪ = ইতিবাচক), এবং টুইটের অন্যান্য তথ্য থাকে।


ধাপ ২: ডেটা প্রি-প্রসেসিং

ডেটা প্রি-প্রসেসিং NLP-এর জন্য গুরুত্বপূর্ণ। এখানে টোকেনাইজেশন, স্টপ ওয়ার্ড রিমুভাল, এবং স্টেমিং/লামাটাইজেশন করা হয়।

import re
import nltk
from nltk.corpus import stopwords
from nltk.stem import WordNetLemmatizer

nltk.download('stopwords')
nltk.download('wordnet')

lemmatizer = WordNetLemmatizer()
stop_words = set(stopwords.words('english'))

def preprocess_text(text):
    # টেক্সট লোয়ারকেস করা
    text = text.lower()
    # পাংচুয়েশন রিমুভ
    text = re.sub(r'\W', ' ', text)
    # স্টপ ওয়ার্ড এবং লামাটাইজেশন
    text = ' '.join([lemmatizer.lemmatize(word) for word in text.split() if word not in stop_words])
    return text

# ডেটাসেটে প্রি-প্রসেসিং করা
df['processed_text'] = df['text'].apply(preprocess_text)
print(df['processed_text'].head())

ধাপ ৩: ডেটা ট্রেনিং এবং টেস্ট সেট তৈরি

ডেটাকে ট্রেনিং এবং টেস্ট সেটে ভাগ করা হবে।

from sklearn.model_selection import train_test_split

X = df['processed_text']
y = df['sentiment'].replace({0: 0, 4: 1})  # 0 = নেতিবাচক, 1 = ইতিবাচক

# ট্রেনিং এবং টেস্ট সেট তৈরি
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

ধাপ ৪: টেক্সট ভেক্টরাইজেশন (Text Vectorization)

টেক্সট ডেটাকে মেশিন লার্নিং মডেলে ব্যবহারের উপযোগী করতে টেক্সট ভেক্টরাইজ করতে হবে। TF-IDF ব্যবহার করে টেক্সটকে ভেক্টরে রূপান্তর করা হবে।

from sklearn.feature_extraction.text import TfidfVectorizer

# TF-IDF ভেক্টরাইজার
vectorizer = TfidfVectorizer(max_features=5000)
X_train_tfidf = vectorizer.fit_transform(X_train)
X_test_tfidf = vectorizer.transform(X_test)

ধাপ ৫: মডেল তৈরি করা

এখানে Logistic Regression ব্যবহার করা হয়েছে, যা Sentiment Analysis প্রজেক্টে সাধারণত ভালো পারফর্ম করে।

from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score, classification_report

# মডেল তৈরি এবং ট্রেনিং
model = LogisticRegression()
model.fit(X_train_tfidf, y_train)

# টেস্ট সেটে প্রেডিকশন
y_pred = model.predict(X_test_tfidf)

# মডেল পারফরম্যান্স মূল্যায়ন
print("Accuracy:", accuracy_score(y_test, y_pred))
print(classification_report(y_test, y_pred))

ধাপ ৬: মডেল টেস্টিং এবং প্রেডিকশন

একটি নতুন টেক্সট এন্ট্রিতে মডেল প্রেডিকশন করতে নিচের কোডটি ব্যবহার করা যেতে পারে।

def predict_sentiment(text):
    text = preprocess_text(text)
    text_tfidf = vectorizer.transform([text])
    prediction = model.predict(text_tfidf)
    return "Positive" if prediction[0] == 1 else "Negative"

# উদাহরণ টেক্সট
sample_text = "I love this product! It’s amazing."
print("Sentiment:", predict_sentiment(sample_text))

ধাপ ৭: মডেল অপ্টিমাইজেশন এবং উন্নয়ন

  1. অভিনব মডেল আর্কিটেকচার: ডিপ লার্নিং মডেল যেমন RNN, LSTM বা BERT ব্যবহার করে আরও উন্নত ফলাফল অর্জন করা যায়।
  2. Hyperparameter Tuning: মডেলের পারফরম্যান্স বাড়ানোর জন্য প্যারামিটার টিউনিং করতে পারেন।
  3. Word Embeddings: Word2Vec, GloVe বা BERT ব্যবহার করে শব্দ ভেক্টরাইজেশন করতে পারেন, যা মডেল একুরেসি বাড়াতে সহায়ক।

ধাপ ৮: মডেল সংরক্ষণ

মডেল ট্রেনিং সম্পন্ন হলে ভবিষ্যতে ব্যবহারের জন্য মডেল এবং ভেক্টরাইজার সংরক্ষণ করতে পারেন।

import joblib

# মডেল এবং ভেক্টরাইজার সংরক্ষণ
joblib.dump(model, 'sentiment_model.pkl')
joblib.dump(vectorizer, 'tfidf_vectorizer.pkl')

উপসংহার

Sentiment Analysis এর মাধ্যমে টেক্সট ডেটা বিশ্লেষণ প্রজেক্টে ডেটা প্রি-প্রসেসিং, ভেক্টরাইজেশন এবং মডেল ট্রেনিংয়ের একটি পূর্ণাঙ্গ প্রক্রিয়া শেখা যাবে। Logistic Regression মডেল ব্যবহার করে টেক্সট ডেটা থেকে অনুভূতি বিশ্লেষণ করতে পারবেন। এটি ব্যবসা, কাস্টমার ফিডব্যাক এবং সামাজিক যোগাযোগ মাধ্যম বিশ্লেষণে অত্যন্ত কার্যকর একটি প্রক্রিয়া।

Content added By
Promotion

Are you sure to start over?

Loading...